Deduplicated data systems are often able to reduce the amount of space required to store files by recognizing redundant data patterns. For example, a deduplicated data system may reduce the amount of space required to store similar files by: 1) dividing each of the files into a plurality of data segments, 2) identifying redundant (i.e., identical) data segments from within the plurality of data segments, and then 3) storing only those data segments that are unique (i.e., non-redundant). In this example, each file within the deduplicated data system may then simply consist of a list of data segments that compose or make up the file, as opposed to containing the actual contents of the file.
While conventional deduplicated data systems may reduce the space required to store files, the mechanisms used by such conventional systems to manage deduplicated data may present unwanted limitations. For example, in order to ensure that data segments are not prematurely removed, conventional deduplicated data systems typically use “bilateral” referencing systems. For example, each file in a conventional deduplicated data system typically maintains a list of data segments that compose or make up the file. Likewise, each data segment within the deduplicated data system typically maintains a list that identifies each file within the system that references the data segment. The deduplicated data system may use each list (i.e., the lists maintained by both the files and the data segments) to identify inactive data segments (i.e., data segments that are no longer referenced by any of the files in the deduplicated data system) that may be removed from the system.
Unfortunately, the bilateral referencing systems used by many conventional deduplicated data systems suffer from a number of deficiencies. For example, when a file in a conventional deduplicated data system is updated, the system typically must update both the referential list maintained by the file and the referential list maintained by each data segment referenced by the file. The process of creating and updating two referential lists may be both time consuming and resource intensive. As such, deduplicated data systems may benefit from a more efficient mechanism for referencing and managing deduplicated data.